pub fn dp_rec_mc(amount: u32) -> u32 {
    // 定义可用的纸币种类
    let coins = [1, 2, 5, 10, 20, 30, 50, 100];
    // 初始化动态规划数组，dp[i] 表示金额 i 所需的最少纸币数
    let mut dp = vec![u32::MAX; (amount + 1) as usize];
    dp[0] = 0; // 0 元需要 0 张纸币

    // 遍历每个纸币种类
    for &coin in &coins {
        // 对于每个金额 i，更新 dp[i] 值
        for i in coin..=amount {
            dp[i as usize] = dp[i as usize].min(dp[(i - coin) as usize] + 1);
        }
    }

    dp[amount as usize] // 返回给定金额所需的最小纸币数
}
